From 4b705d23d23338bef24f0897bdbfec0ef5507c9f Mon Sep 17 00:00:00 2001 From: Anders Carlsson Date: Wed, 18 Jan 2006 10:06:00 +0000 Subject: [PATCH] Implement these functions. (#327228, Thomas Broyer). 2006-01-18 Anders Carlsson * gdk/quartz/gdkevents-quartz.c: (get_mm_from_pixels): (gdk_screen_get_width_mm): (gdk_screen_get_height_mm): Implement these functions. (#327228, Thomas Broyer). --- ChangeLog | 9 ++++++ ChangeLog.pre-2-10 | 9 ++++++ gdk/quartz/gdkscreen-quartz.c | 53 ++++++++++++++++++++++++++++++++--- 3 files changed, 67 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 75ff2f6f86..a4d5a66e95 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2006-01-18 Anders Carlsson + + * gdk/quartz/gdkevents-quartz.c: + (get_mm_from_pixels): + (gdk_screen_get_width_mm): + (gdk_screen_get_height_mm): + Implement these functions. + (#327228, Thomas Broyer). + 2006-01-18 Anders Carlsson * gdk/quartz/gdkdrawable-quartz.c: diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 75ff2f6f86..a4d5a66e95 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,12 @@ +2006-01-18 Anders Carlsson + + * gdk/quartz/gdkevents-quartz.c: + (get_mm_from_pixels): + (gdk_screen_get_width_mm): + (gdk_screen_get_height_mm): + Implement these functions. + (#327228, Thomas Broyer). + 2006-01-18 Anders Carlsson * gdk/quartz/gdkdrawable-quartz.c: diff --git a/gdk/quartz/gdkscreen-quartz.c b/gdk/quartz/gdkscreen-quartz.c index dbb82bce1d..f23eba227e 100644 --- a/gdk/quartz/gdkscreen-quartz.c +++ b/gdk/quartz/gdkscreen-quartz.c @@ -132,22 +132,67 @@ gdk_screen_get_height (GdkScreen *screen) return height; } +static gint +get_mm_from_pixels (NSScreen *screen, int pixels) +{ + /* userSpaceScaleFactor is in "pixels per point", + * 72 is the number of points per inch, + * and 25.4 is the number of millimeters per inch. + */ + return ((pixels / [screen userSpaceScaleFactor]) / 72) * 25.4; +} + gint gdk_screen_get_width_mm (GdkScreen *screen) { + int i; + gint width; + NSArray *array; + NSAutoreleasePool *pool; + g_return_val_if_fail (GDK_IS_SCREEN (screen), 0); - /* FIXME: Implement */ - return 0; + pool = [[NSAutoreleasePool alloc] init]; + array = [NSScreen screens]; + + width = 0; + for (i = 0; i < [array count]; i++) + { + NSScreen *screen = [array objectAtIndex:i]; + NSRect rect = [screen frame]; + width += get_mm_from_pixels (screen, rect.size.width); + } + + [pool release]; + + return width; } gint gdk_screen_get_height_mm (GdkScreen *screen) { + int i; + gint height; + NSArray *array; + NSAutoreleasePool *pool; + g_return_val_if_fail (GDK_IS_SCREEN (screen), 0); - /* FIXME: Implement */ - return 0; + pool = [[NSAutoreleasePool alloc] init]; + array = [NSScreen screens]; + + height = 0; + for (i = 0; i < [array count]; i++) + { + NSScreen *screen = [array objectAtIndex:i]; + NSRect rect = [screen frame]; + gint h = get_mm_from_pixels (screen, rect.size.height); + height = MAX (height, h); + } + + [pool release]; + + return height; } int -- 2.30.2